Disclosed herein is a method and apparatus for creating dynamic print drivers that are based on Microsoft's Extensible Markup Language (XML) Paper Specification (XPS) for printing documents in the Windows printing infrastructure using a plurality of proxy filters in a filter pipeline within a print driver, as well as the corresponding apparatus and computer-readable medium.
Print drivers that are based on Microsoft's XML Paper Specification (XPS) contain a set of print processing modules that are called filters and a configuration file that describes which filters a print driver uses, the order in which the filters process the print job, and how data is passed between each filter and the inter-filter communicator (IFC). The configuration file is hardcoded in an XML file. A filter is a dynamic link library (DLL) that exports DLL functions. The specific function or functions that each filter performs depends on the print driver implementation and the printer requirements. A filter may perform only a single function, or it may perform multiple functions. This technique of using filters to perform the functions is limiting because the Microsoft's print spooler implementation forces the selection and order of these filters to be defined and fixed when the print driver is built and because the configuration file cannot be altered due to the requirement that the print driver needs to be certified and digitally signed. Altering any of the files that ship with a print driver would break its digital signature.